package com.lyt.springboot.designPattern.iteratorPattern;

import lombok.SneakyThrows;

public class ComputeTask implements Task {
    private String expression;

    public ComputeTask(String expression) {
        this.expression = expression;
    }

    @Override
    public void execute() {
        try {
            Object result = new Object() {
                @SneakyThrows
                @Override
                public String toString() {
                    return String.valueOf(eval(expression));
                }
            }.toString();
            System.out.println("Computed result: " + result);
        } catch (Exception e) {
            System.out.println("Error computing expression: " + expression + ". Error: " + e.getMessage());
        }
    }

    // 注意：这里使用了一个简单的eval实现，仅用于演示目的。在实际应用中，应避免使用eval，因为它可能引发安全问题。
    // 一个更安全的做法是使用脚本引擎或解析表达式库。
    private static Object eval(String expression) throws Exception {
        return new javax.script.ScriptEngineManager().getEngineByName("JavaScript").eval(expression);
    }
}